/*
 * @Author: zxc
 * @Date: 2021-01-30 09:23:13
 * @LastEditTime: 2021-01-30 12:28:43
 * @LastEditors: zxc
 * @Description:实现一个promise
 */
/**
 * 1. promise是一个类,在执行这个类的时候，需要传递一个执行器，执行器会立即执行
 * 2. Pormise中有三种状态，分别为成功 fulfilled，失败 rejected，等待 pendig
 *    pending -> fulfilled
 *    pending -> rejected
 * 3. promise的状态不可变，一旦确定即不可更改
 * 4. resolve 和 reject函数是用来改变状态的
 *    resolve: fulfilled
 *    reject: rejected
 * 5. then内部做的事情，就是判断状态，如果状态是成功，调用 成功回调函数
 *    如果状态是失败，调用失败函数   then方法是被定义在原型对象中的
 * 6. then成功回调有一个参数，表示成功之后的值
 *    then失败回调有一个参数，表示失败的原因
 * 7. then方法可被链式调用，后续then方法的回调函数拿到的值是上一个then方法的回调函数
 *
 */
import myPromise from "./myPromise.mjs"
let promise = new myPromise((resolve, reject) => {
  // setTimeout(() => {
  //   resolve("成功")
  // }, 2000);
  // throw new Error('executor error')
  // resolve('成功')
  reject("失败")
})

function other() {
  return new myPromise((resolve, reject) => {
    resolve('other')
  })
}

promise.then().then().then(
  res => {
    console.log(res)
    return 12222
  },
  err => {
    console.log(err)
  }
)